package com.cloud.manager.utils.parser;

import com.cloud.manager.web.domain.AppInfo;
import org.apache.commons.io.FilenameUtils;

/**
 * 描述：
 *
 * @author FineEx   2021/12/1
 * @version 1.0
 */
public class ParserClient {
    /**
     * 解析包
     * @param filePath 文件路径
     * @return
     */
    public static AppInfo parse(String filePath) throws ClassNotFoundException {
        AppParser parser = getParser(filePath);
        if (parser != null) {
            return parser.parse(filePath);
        }
        return null;
    }

    /**
     * 根据文件后缀名获取解析器
     * @param filePath
     * @return
     */
    private static AppParser getParser(String filePath) throws ClassNotFoundException {
        String extension = FilenameUtils.getExtension(filePath);
        // 动态获取解析器
        Class aClass = Class.forName("com.cloud.manager.utils.parser." + extension.toUpperCase()+"Parser");
        try {
            AppParser appParser = (AppParser)aClass.newInstance();
            return appParser;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
